package exercise.基础练习;

import java.util.Scanner;

/**
 * 资源限制
 * 时间限制：1.0s   内存限制：512.0MB
 * 问题描述
 * 　　从键盘输入一个不超过8位的正的十六进制数字符串，将它转换为正的十进制数后输出。
 * 　　注：十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
 * 样例输入
 * FFFF
 * 样例输出
 * 65535
 */
public class B11_十六进制转十进制 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(hexToDec(sc.next()));
        //用Java自带API只需一行代码，注意int越界问题
        System.out.println(Long.valueOf(sc.next(), 16));
    }

    private static long hexToDec(String hex_number){
        //先反转一下才能计算
        hex_number = new StringBuilder(hex_number).reverse().toString();
        long result = 0;
        for (int i = 0; i < hex_number.length(); i++) {
            //当前位
            char current = hex_number.charAt(i);
            switch (current){
                case 'A':result += 10 * (long)Math.pow(16,i);break;
                case 'B':result += 11 * (long)Math.pow(16,i);break;
                case 'C':result += 12 * (long)Math.pow(16,i);break;
                case 'D':result += 13 * (long)Math.pow(16,i);break;
                case 'E':result += 14 * (long)Math.pow(16,i);break;
                case 'F':result += 15 * (long)Math.pow(16,i);break;
                default:result += (current - '0') * (int)Math.pow(16,i);break;
            }
        }
        return result;
    }
}
